package com.itheima.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


//控制器
@RestController
@RequestMapping("/checkitem")
public class CheckItemController {

    //注入service
    @Reference
    private CheckItemService checkItemService;
    //辩证的思维

    /*
    *1.检查项查询
        a.请求地址：/checkitem/findPage.do
        b、请求参数：(Json参数)   currentPage、pageSize、queryString （暂时不用）
        *       Java面向对象的语言：   万事万物皆对象
        c.功能是什么： 带条件的分页查询（暂时：查询所有检查项）
        *       一般来说，每张表都有一个类和它对应（ORM对象关系映射）Mybatis时
        d.返回什么：total、rows
    * */
    @RequestMapping("/findPage")
    //把返回的对象转化为Json字符串
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
        //控制器：1、接受请求；2.接收参数；3.调用service；4.封装返回
        //c.暂时：查询所有检查项
        PageInfo<CheckItem> pageInfo =  checkItemService.findPage(queryPageBean);

        //d.返回什么 total、rows   (说白了就是返回PageResult对象)
        return new PageResult(pageInfo.getTotal(),pageInfo.getList());
    }

    /*
    * 2.检查项新增
        a.请求地址： /checkitem/add.do
        b、请求参数：age、attention、code、name、price、remark、sex、type
        c.功能是什么：添加检查项数据
        d.返回什么：flag、message      Result类
    * */
    @RequestMapping("/add")
   //把返回的对象转化为Json字符串
    public Result add(@RequestBody CheckItem checkItem){
        /*int i =  checkItemService.add(checkItem);
        if(i>0){
            return new Result(true,"您好ikun，您添加数据成功");
        }else{
            return new Result(false,"对不起ikun，您添加数据失败");
        }*/
        try{
            checkItemService.add(checkItem);
            return new Result(true,"您好ikun，您添加数据成功");
        }catch (Exception e){
            e.printStackTrace(); //打印异常
            return new Result(false,"对不起ikun，您添加数据失败");
        }
    }

    /*
    * a.检查项回显
            1）.请求地址： /checkitem/findById.do
            2）.请求参数： id (普通参数)
            3）.功能是什么： 根据id查询检查项数据
            4）.返回什么： 成功（flag、data）  失败（flag、message）
    * */
    @RequestMapping("/findById")
    public Result findById(int id){
        CheckItem checkItem = checkItemService.findById(id);
        if(checkItem != null){
            return new Result(true,checkItem);
        }else{
            return new Result(false,"数据回显失败");
        }
    }

    /*
    * b.修改检查项
        1）.请求地址：/checkitem/edit.do
        2）.请求参数：id、age、attention、code、name、price、remark、sex、type
        3）.功能是什么： 修改数据
        4）.返回什么：成功（flag、message） 失败（flag、message）
    * */
    @RequestMapping("/edit")
    public Result edit(@RequestBody CheckItem checkItem){
        try{
            checkItemService.edit(checkItem);
            return new Result(true,"恭喜爱凡，您编辑成功");
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"对不起爱凡，您编辑失败了！！！");
        }
    }
    /*
    * 4.检查项删除
        a.请求地址： /checkitem/delete.do
        b、请求参数：id （普通参数）
        c.功能是什么：根据id删除数据
        d.返回什么：成功（flag、message） 失败（flag、message）
        * 浙江除杭州
        * 山西人
        * 赚到钱之后：存着
    * */
    @RequestMapping("/delete")
    public Result delete(int id){
        try{
            checkItemService.delete(id);
            return new Result(true,"恭喜黑子删除成功");
        }catch (Exception e){
            e.printStackTrace();
            return new Result(false,"很遗憾黑子删除失败了");
        }
    }

    /*
    * a.回显所有检查项
            1）.请求地址：/checkitem/findAll.do
            2）.请求参数： 无
            3）.功能是什么： 查询所有检查项
            4）.返回什么： 成功（flag、data）  、  失败（flag、message）
    * */
    @RequestMapping("/findAll")
    public Result findAll(){
        List<CheckItem> checkItems =  checkItemService.findAll();
        if(!checkItems.isEmpty()){
            return new Result(true,checkItems);
        }else{
            return new Result(false,"对不起凡凡您查询失败了");
        }
    }
}
